﻿/* 
 * Enterprise Library Extensions - DI + ORM.
 * Copyright (C) 2006
 *
 * GNU General Public License
 *
 * This program is free software; you can redistribute 
 * it and/or modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 */
#region Using directives

using System;
using System.Text;

#endregion

namespace ELE.EnterpriseLibrary.Naming.Configuration
{
  /// <summary>
  /// A generic configuration tag list
  /// </summary>
	public abstract class GenericConfiguration : MarshalByRefObject
  {
    /// <summary>
    /// Tag name defines any descendant direct or indirect of the node in xpath form
    /// </summary>
    public const string DESCENDANT_KEYWORD = "descendant::";
    /// <summary>
    /// Tag name defines a direct child of the node in xpath form
    /// </summary>
    public const string CHILD_KEYWORD = "child::";
    /// <summary>
    /// Tag name in the ONDI config file that identifies a list of item values
    /// </summary>
    public const string TAGNAME_LIST = "list";
    /// <summary>
    /// Tag name in the ONDI config file that identifies an item value in a list
    /// </summary>
    public const string TAGNAME_ITEM = "item";
    /// <summary>
    /// Tag name in the ONDI config file that identifies a list of item values
    /// </summary>
    public const string TAGNAME_HASHMAP = "hashMap";
    /// <summary>
    /// The name of the tag for the type of the component
    /// </summary>
    public const string TAGNAME_TYPE = "type";
    /// <summary>
    /// Tag name in the ONDI config file that identifies a class name
    /// </summary>
    public const string TAGNAME_CLASS = "class";
    /// <summary>
    /// Tag name in the ONDI config file that identifies a assembly name
    /// </summary>
    public const string TAGNAME_ASSEMBLY = "assembly";
    /// <summary>
    /// Tag name in the ONDI config file that identifies a lreference to a context object to initialize
    /// </summary>
    public const string TAGNAME_REFERENCE = "reference";
    /// <summary>
    /// A space character sequence that defines the start of a link to another variable
    /// </summary>
    public const string ESCAPE_LINK_START = @"${";
    /// <summary>
    /// <summary>
    /// A space character sequence that defines the end of a link to another variable
    /// </summary>
    /// </summary>
    public const string ESCAPE_LINK_END = @"}";
    /// <summary>
    /// <summary>
    /// A space character sequence that defines the start of an indexed value
    /// </summary>
    /// </summary>
    public const string ESCAPE_INDEX_START = @"[";
    /// <summary>
    /// <summary>
    /// A space character sequence that defines the end of an indexed value
    /// </summary>
    /// </summary>
    public const string ESCAPE_INDEX_END = @"]";
    /// <summary>
    /// Add tag for collections
    /// </summary>
    public const string TAGNAME_ADD = "add";
    /// <summary>
    /// Name attribute for the Add Tag <see cref="TAGNAME_ADD"/>
    /// </summary>
    public const string ATTRIBUTENAME_NAME = "name";
    /// <summary>
    /// Indicates a parameter to either a method or a constructor
    /// </summary>
    public const string TAGNAME_PARAM = "param";
    /// <summary>
    /// Defines a <see cref="System.Collections.Generic.Dictionary&lt;T,T&gt;"/> type value.
    /// </summary>
    public const string TAGNAME_DICTIONARY = "dictionary";
    /// <summary>
    /// Indicates the generic type on a list that uses <see cref="System.Collections.Generic.List&lt;T&gt;"/>
    /// </summary>
    public const string ATTRIBUTENAME_GENERICTYPE = "genericType";
    /// <summary>
    /// Indicates the generic type of the key in a <see cref="System.Collections.Generic.Dictionary&lt;T,T&gt;"/>
    /// </summary>
    public const string ATTRIBUTENAME_GENERICKEYTYPE = "genericKeyType";
    /// <summary>
    /// Indicates the generic type of the value in a <see cref="System.Collections.Generic.Dictionary&lt;T,T&gt;"/>
    /// </summary>
    public const string ATTRIBUTENAME_GENERICVALUETYPE = "genericValueType";
    /// <summary>
    /// Tag that contains a value for a key added to a dictionary item
    /// </summary>
    public const string TAGNAME_KEY = "key";
    /// <summary>
    /// Tag that contains the value of an item in the dictionary
    /// </summary>
    public const string TAGNAME_VALUE = "value";
  }
}
